﻿using System.Collections.Generic;
using Newtonsoft.Json;

namespace battlenet.wow.rt.sdk.data.dto
{
    internal class ItemDetailInfo
    {
        [JsonProperty("id")]
        public int Id { get; set; }

        [JsonProperty("description")]
        public string Description { get; set; }

        [JsonProperty("name")]
        public string Name { get; set; }

        [JsonProperty("icon")]
        public string Icon { get; set; }

        [JsonProperty("stackable")]
        public int Stackable { get; set; }

        [JsonProperty("allowableClasses")]
        public int[] AllowableClasses { get; set; }

        [JsonProperty("itemBind")]
        public int ItemBind { get; set; }

        [JsonProperty("bonusStats")]
        public List<StatInfo> BonusStats { get; set; }

        [JsonProperty("itemSpells")]
        public List<ItemSpellInfo> ItemSpells { get; set; }

        [JsonProperty("buyPrice")]
        public long BuyPrice { get; set; }

        [JsonProperty("itemClass")]
        public int ItemClass { get; set; }

        [JsonProperty("itemSubClass")]
        public int ItemSubclass { get; set; }

        [JsonProperty("containerSlots")]
        public int ContainerSlots { get; set; }

        [JsonProperty("weaponInfo")]
        public WeaponInfo WeaponInfo { get; set; }

        [JsonProperty("inventoryType")]
        public int InventoryType { get; set; }

        [JsonProperty("equipabble")]
        public bool Equippable { get; set; }

        [JsonProperty("itemLevel")]
        public int ItemLevel { get; set; }

        [JsonProperty("maxCount")]
        public int MaxCount { get; set; }

        [JsonProperty("maxDurability")]
        public int MaxDurability { get; set; }

        [JsonProperty("minFactionId")]
        public int MinFactionId { get; set; }

        [JsonProperty("minReputation")]
        public int MinReputation { get; set; }

        [JsonProperty("quality")]
        public int Quality { get; set; }

        [JsonProperty("sellPrice")]
        public long SellPrice { get; set; }

        [JsonProperty("requiredSkill")]
        public int RequiredSkill { get; set; }

        [JsonProperty("requiredLevel")]
        public int RequiredLevel { get; set; }

        [JsonProperty("requiredSkillRank")]
        public int RequiredSkillRank { get; set; }

        [JsonProperty("socketInfo")]
        public SocketsInfo SocketInfo { get; set; }

        [JsonProperty("itemSource")]
        public ItemSourceInfo ItemSource { get; set; }

        [JsonProperty("baseArmor")]
        public int BaseArmor { get; set; }

        [JsonProperty("hasSockets")]
        public bool HasSockets { get; set; }

        [JsonProperty("isAuctionable")]
        public bool IsAuctionable { get; set; }

        [JsonProperty("armor")]
        public int Armor { get; set; }

        [JsonProperty("displayInfoId")]
        public long DisplayInfoId { get; set; }

        [JsonProperty("nameDescription")]
        public string NameDescription { get; set; }

        [JsonProperty("nameDescriptionColor")]
        public string NameDescriptionColor { get; set; }

        [JsonProperty("upgradable")]
        public bool Upgradable { get; set; }

        [JsonProperty("heroicTooltip")]
        public bool HeroicTooltip { get; set; }

        [JsonProperty("context")]
        public string Context { get; set; }

        [JsonProperty("bonusLists")]
        public int[] BonusLists { get; set; }

        [JsonProperty("availableContexts")]
        public string[] AvailableContexts { get; set; }

        [JsonProperty("disenchantingSkillRank")]
        public int DisenchantingSkillRank { get; set; }
    }
}
